package com.java.mytest_ysy.c.demo4;

import java.util.*;

import static java.lang.String.*;

/* 将以下车站对应关系的数据存储到map集合中，
key：表示站编号，value：表示站名，并遍历打印(可以不按顺序打印)：
2. 计算地铁票价规则：总行程 3站内（包含3站）收费3元，3站以上但不超过5站（包含5站）的收费4元，
5站以上的，在4元的基础上，每多1站增加2元，10元封顶；
3. 需要对键盘录入的上车站和到达站进行判断，如果没有该站，提示重新输入，直到站名存在为止,
每站需要2分钟.*/
public class Test {
    public static void main(String[] args) {
        Map<String,String> allStand=new HashMap<>();
        //Integer[] standNUmber={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,21,32,33,34};
       /* String[] standName={"1-黄花机场T1T2","2-木马塅","3-大路村","4-龙峰","5-曹家坪","6-檀木桥","7-龙华","8-韶光","9-东湖","10-农科院农大","11-隆平水稻博物馆",
                "12-花桥","13-人名东路","14-芙蓉区政府","15-朝阳村","16-窑岭湘雅二医院","17-迎宾路口","18-烈士公园南","19-湘雅医院","20-文昌阁","21-六沟垅","22-湘雅三医院",
                "23-白鸽咀","24-湖南工商大学","25-涧塘","26-麓谷公园","27-麓谷体育公园","28-长丰","29-和馨园","30-长庆","31-一师范西校区","32-中塘","33-象鼻窝","34-谢家桥"};*/
        String standName="1-黄花机场T1T2,2-木马塅,3-大路村,4-龙峰,5-曹家坪,6-檀木桥,7-龙华,8-韶光,9-东湖,10-农科院农大,11-隆平水稻博物馆,12-花桥,13-人名东路,14-芙蓉区政府,15-朝阳村,16-窑岭湘雅二医院,17-迎宾路口,18-烈士公园南,19-湘雅医院,20-文昌阁,21-六沟垅,22-湘雅三医院,23-白鸽咀,24-湖南工商大学,25-涧塘,26-麓谷公园,27-麓谷体育公园,28-长丰,29-和馨园,30-长庆,31-一师范西校区,32-中塘,33-象鼻窝,34-谢家桥";
        String[] splits = standName.split(",");
        for (String string : splits) {
            String[] split1 = string.split("\\-");
            allStand.put(split1[0],split1[1]);
        }
        //打印Map集合
        printMap(allStand);
        //用户输入上车站
        Scanner sc=new Scanner(System.in);
        while (true) {
            System.out.print("请输入上车站：");
            String startNumber=sc.nextLine();
            if (allStand.containsKey(startNumber)){
                String s = allStand.get(startNumber);
                System.out.println(s);
                while (true) {
                    System.out.print("请输入到车站：");
                    String endNumber = sc.nextLine();
                    if (allStand.containsKey(endNumber)) {
                        String s1 = allStand.get(endNumber);
                        System.out.println(s1);
                        //开始计算费用和时间总行程 3站内（包含3站）收费3元，3站以上但不超过5站（包含5站）的收费4元，
                        //5站以上的，在4元的基础上，每多1站增加2元，10元封顶；
                        int countNumber= Integer.valueOf(endNumber)- Integer.valueOf(startNumber);
                        double money=0;
                        if (0<countNumber&&countNumber<=3) {
                             money=3;
                        } else if (3<countNumber&&countNumber<=5) {
                            money=3;
                        }else if (5<countNumber) {
                            money=4+(countNumber-5)*2;
                            if (money>=10){
                                money=10;
                            }
                        }
                        int minute=countNumber*2;
                        System.out.println("从"+s+"到"+s1+"总共经过"+countNumber+"站，收费"+money+"元，大约需要"+minute+"分钟");
                        break;
                    } else {
                        System.out.println("站点不存在，请重新输入");
                    }
                }
                break;
            }else {
                System.out.println("站点不存在，请重新输入");
            }
        }
    }

    private static void printMap(Map<String, String> allStand) {
        Set<String> number = allStand.keySet();
        int count=1;
        for (String s : number) {
            String name = allStand.get(s);
            System.out.print(s + " - " + name);
            count++;
            if (count % 5 == 0) {
                System.out.println();
            }
        }
    }
}
